package study.javase.thread;

/**
 * 多线程开启方式（2）（推荐使用这种方式） 继承Runnable接口，实现run()
 * 推荐原因：①避免单继承的局限性，优先使用实现接口的方式②方便共享资源
 * 步骤：
 * 1.继承Runnable接口，实现run()
 * 2.创建实现类对象，创建代理类Thread对象，实现类对象传入代理类对象，调用start()开启线程
 * @author lsw
 * 2020-9-3 16:33:23
 */
public class StartRunnable implements Runnable{
    @Override
    public void run() {
        for (int i=0;i<20;i++) {
            System.out.println("一边听音乐");
        }
    }
    public void coding(){
        for (int i=0;i<20;i++) {
            System.out.println("一边coding");
        }
    }

    public static void main(String[] args) {
        // 创建实现类对象
        StartRunnable st = new StartRunnable();
        // 创建代理类对象，传入实现类对象
        Thread thread = new Thread(st);
        // 此时会调用StartRunnable中的run()方法，和coding同步执行，开启后不一定立即执行，系统安排调度分配执行
        thread.start();
        //st.run();  调用普通方法，限制性run(),再执行coding

        st.coding();
    }
}
